package xyz.bali16.module.netdisk.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import xyz.bali16.module.netdisk.entity.FileFolder;
import xyz.bali16.module.netdisk.entity.FileStorage;

import java.util.List;


@Mapper
public interface FileStorageMapper extends BaseMapper<FileStorage> {
     /**
      * 更新文件用户的文件仓库信息
      * 更新的内容由FileStorage实体决定
      * 目前会更新permission、currentSize、maxSize
      * @param fileUserId
      * @param fileStorage
      * @return
      */
     IPage<FileStorage> getPage(IPage<?> page, @Param("id") String id, @Param("fileUserId") String fileUserId);
     Integer updateUserInformation(@Param("fileUserId") String fileUserId,@Param("fileStorage") FileStorage fileStorage);
     /*

      */
     FileStorage getFileStorageByFileUserId(@Param("fileUserId")String fileUserId);

     /**
      * 根据文件用户Id获取可用的存储空间
      * @param fileUserId  文件用户Id
      * @param permission >=permission关系 到时候获取包含该权限的有效文件仓库
      * @return
      */
     List<FileStorage> getFileStorageByPermission(@Param("fileUserId") String fileUserId, @Param("permission") Integer permission);

     /**
      * 根据文件用户Id获取可用的存储空间
      * @param fileUserId 文件用户Id
      * @param permission >permission关系 到时候返回此权限之上的有效文件仓库
      * @return
      */
     List<FileStorage> getAvailableStoragesByFileUserId(@Param("fileUserId") String fileUserId, @Param("permission") Integer permission);

     /**
      * 增加文件仓库的存储空间
      * @param id 文件仓库id
      * @param size 大小,B为单位
      * @return
      */
     Integer addFileStorageSize(@Param("id") String id, @Param("size") Integer size);

     /**
      * 减少文件仓库的存储空间
      * @param id 文件仓库id
      * @param size 大小,B为单位
      * @return
      */
     Integer removeFileStorageSize(@Param("id")String id,@Param("size") Integer size);

}
